package com.xiaomi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

//介绍SpringBoot自动装配的原理
//SpringBoot自动装配的原理是通过@SpringBootApplication注解来实现的
//@SpringBootApplication注解是一个组合注解，它包含了以下注解：
//@SpringBootConfiguration：这个注解是一个组合注解，它包含了@Configuration注解，@EnableAutoConfiguration注解和@ComponentScan注解
//@Configuration：这个注解是一个组合注解，它包含了@Component注解
//@EnableAutoConfiguration：这个注解是一个组合注解，它包含了@AutoConfigurationPackage注解和@Import注解
//@AutoConfigurationPackage：这个注解是一个组合注解，它包含了@Import注解
//@Import注解是用来导入配置类的，它的参数是一个Class类型的数组，数组中的每个元素都是一个配置类
//@Import注解的参数是一个Class类型的数组，数组中的每个元素都是一个配置类
//配置类是用来配置Spring容器的，配置类中可以定义一些Bean，这些Bean可以被Spring容器管理
//配置类中可以定义一些Bean，这些Bean可以被Spring容器管理
@SpringBootApplication
public class SpringbootAutoConfigApplication {
    public static void main(String[] args){
        ApplicationContext applicationContext = SpringApplication.run(SpringbootAutoConfigApplication.class, args);
//        String[] beanNames = applicationContext.getBeanDefinitionNames();
//        for (String beanName : beanNames) {
//            System.out.println(beanName);
//        }

    }
}